
assertTrue(Object.getPrototypeOf(Date.prototype) === Object.prototype);

assertTrue(Object.getPrototypeOf({}) === Object.prototype)

var o1 = {};
var o2 = Object.create(o1);

o1.test = function() {return this.value;}
o1.value = 200;

assertEquals(200, o1.test());
assertEquals(200, o2.test());

o2.value = 400;
assertEquals(200, o1.test());
assertEquals(400, o2.test());

assertTrue(Object.getPrototypeOf(o2) == o1);

var o3 = {value:1000};
assertEquals(1000, o2.test.call(o3));

var fn = o2.test.bind({value:205});
assertEquals(205, fn());
assertEquals(205, fn.call(o3));